package controle;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Lindemberg
 */
public class Functions {

    public double periodo;

    public void Functions(double _periodo) {
        this.periodo = _periodo;
    }

    /**
     * Função degrau com amplitude amp
     * @param amp amplitude do sinal (degrau unitario amp = 1)
     * @param t   tempo
     * @return    função degrau
     */
    public double Degrau(double amp, double t) {
        return (t < 0) ? 0 : amp;
    }

    /**
     * Função senóide com período this.periodo
     * @param t tempo
     * @return  função senóide
     */
    public double Senoide(double amp, double t) {
        //return 1+Math.sin((2 * Math.PI) / this.periodo);
        return amp * Math.sin(2 * Math.PI * t / periodo);
    }

    /**
     * Função quadrada com amplitude amp e período this.periodo
     * @param amp amplitude do sinal
     * @param t   tempo
     * @return    função quadrada
     */
    public double Quadrada(double amp, double t) {

        int inteiro = (int) (t / (this.periodo / 2));
        return (inteiro % 2) == 0 ? amp : -amp;
    }

    /**
     * Função dente de serra com período this.período
     * @param t tempo
     * @return  função dente de serra
     */
    public double DenteSerra(double amp, double t) {
        //return amp * (t % this.periodo);
        //return (amp * t) % periodo;
        return 2* amp * (t - Math.floor(t));
    }

    public double Aleatorio(double amp) {
        return 2 * amp * Math.random();
    }
}
